package day0516;


interface  Enemy{//敌方飞机如果实现Award接口，就给游戏加分
    void addScore();
}

interface  Award{//敌方飞机如果实现Award接口，就给游戏加命
    void addLife();
}


abstract class FlyingObject{
    int x;
    int y;
    int speed=3;
    public void move(){
        y=y+speed;
    }

    public abstract void outOfBounds();//强制让子类重写destroy()
}

class Bullet extends FlyingObject{
    //子弹移动的方法(将子弹的坐标移动到x1，y1的位置)
    Bullet(){
        speed=1;
    }
    public void outOfBounds(){
        System.out.println("Bullet出界了");
    }
}


//底下玩家控制的飞机
public class MyPlane extends FlyingObject{
    //己方飞机移动的方法(将己方飞机的坐标移动到x1，y1的位置)
    MyPlane(){//构造方法
        x=10;
        y=10;
        speed=1;
    }

    public void move(int x1, int y1){
        x=x1;
        y=y1;
    }
    public void outOfBounds(){
        System.out.println("MyPlane出界了");
    }

    int doubleFire=2;
    public Bullet[] shoot() {
        Bullet[] bullets=new Bullet[doubleFire];
        for(int i=0;i<bullets.length;i++){
            Bullet b=new Bullet();
            b.x=this.x+i*10;
            b.y=y-i*10;
            bullets[i]=b;
        }
        return bullets;
    }
}







class BluePlane extends FlyingObject implements Award,Enemy{
    public void addLife(){
        System.out.println("MyPlane飞机生命加1");
    }
    public void addScore(){
        System.out.println("游戏分数加1");
    }
    //己方飞机移动的方法(将己方飞机的坐标移动到x1，y1的位置)
    BluePlane(){
        x=2;
        y=2;
        speed=2;
    }
    public void outOfBounds(){
        System.out.println("BluePlane出界了");
    }
}


class YellowPlane extends FlyingObject{
    //己方飞机移动的方法(将己方飞机的坐标移动到x1，y1的位置)
    YellowPlane(){
        speed=3;
    }
    public void outOfBounds(){
        System.out.println("YellowPlane出界了");
    }
}


class OrangePlane extends FlyingObject{
    //己方飞机移动的方法(将己方飞机的坐标移动到x1，y1的位置)
    OrangePlane(){
        x=0;
        y=0;
        speed=4;
    }
    public void outOfBounds(){
        System.out.println("OrangePlane出界了");
    }
}